import { Cache } from './Queue.js';
/**
 *  
 * 固定长度的队列
 * 读取位置需要在队列外部控制
 *  
 */
export var QQueue = {
	//类变量和方法
	createNew: function(缓存长度) {
		//定义私有变量
		//定义对象内部方法
		var self = Queue.createNew(缓存长度);
		self.add = function(a) {
			self.a缓存.push(a);//插入数据到数组的末尾
			self.i缓存长度++;
			if (self.i缓存长度 > self.i最大缓存) {
				self.i缓存长度 = self.i最大缓存;
				self.a缓存.shift();//超出了就扔掉数组中0下标元素,也就是最早的数据             
			}
		};
		/**
		 * 读一条记录
		 */
		self.read1 = function(读取位置) {
			let v = self.a缓存[读取位置];
			读取位置++; //下一次的读取位置
			return { msg: v, next: 读取位置 };
		};
		/**
		 * 连续读取数据到缓存末尾
		 */
		self.read2end = function(读取位置) {
			let v = self.a缓存.slice(读取位置)
			return { msg: v, next: self.i缓存长度 };//下一次的读取位置
		};
		/**
		 * 从 n位置读取到m位置
		 * @param {*} n 
		 * @param {*} m 
		 */
		self.readnstart = function(n, m) {
			n = (n == null || n < 0) ? 0 : n;
			m = (m == null || m > self.i缓存长度) ? self.i缓存长度 : m;
			let v = self.a缓存.slice(n, m)
			return { msg: v, next: m };
		};
		return self;
	}
};
